iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0

SQL 是指稱一種 Query Language(查詢語言)。
NoSQL 是指稱某一類型的 Databases(資料庫系統)。

這兩個詞彙不算同類。但是,常常會被放在一起說。我也不知道為何國內外都喜歡用「SQL vs. NoSQL」,而少用 「RDB vs. NoSQL」,而且還很少人搞錯,可能看起來比較對稱?這個議題很難短篇幅去談,我挑一些比較少結合一起講的內容說,姑且稱為「雜談」。

SQL 不算開發語言?

我個人堅定支持 SQL 是程式語言。 我特別找來 IEEE(電機電子工程師學會) 來背書,2022 的統計中,以職位數量來看,SQL 才是最大開發者社群。全球程式開發工程師、資料庫管理師、資料分析人員、商業分析人員,每日都有大批的使用者。
https://ithelp.ithome.com.tw/upload/images/20230909/20161790AjNAmKoFPe.png
圖片來源:https://spectrum.ieee.org/top-programming-languages-2022

不過,若是從社群聲量、科技趨勢等層面綜合統計,Python 第一,SQL 只佔到第六位。
我個人一直不能理解開發工程師之間為何會有開發語言鄙視鏈,這些都只是「語言」,軟體開發重點在「思想」與「表達」,這部分是跨越語言的。
在 Data Project (資料專案, 後面有一篇會說明其定義)中,經常需要開發 Data Pipeline (資料管線,後面有一篇會說明其定義),由於 Data Pipeline 是強調「資料來源端」到「資料使用端」的整合開發,可能需要跨越數個系統接起管線,為了符合各站點的環境要求,混合使用 Python, Java, SQL 是常有的狀況。

NoSQL 需要搭配較高的開發能力

NoSQL 是不支持 SQL 查詢的意思,它是反關聯性的,跟 Relational Databases (RDB, 關聯式資料庫系統) 相比較, NoSQL 有較弱的一致性,因此就跟 Distributed System (分散式系統架構)一拍即合。而關聯式資料庫系統是強一致性,尤其是作為交易系統更不能允許多次查詢出現不一致的結果,而跟單體式系統有較高的相性。

延伸:談到 SQL & NoSQL 時需要知道的詞彙

  • ACID:RDB 關聯式資料庫系統必須遵守的原則。
  • BASE:大多數 NoSQL 資料庫遵守的原則。
  • CAP:分散式系統無法三者兼得的特性。

參考資料:附上 2 張我個人覺得在思考資料庫的選擇時非常有用的圖

https://ithelp.ithome.com.tw/upload/images/20230909/20161790CaUeegzqwG.png
圖片來源:https://stackoverflow.com/questions/33760290/how-many-types-of-database-are-there
https://ithelp.ithome.com.tw/upload/images/20230909/20161790nPbiUzDCFw.png
圖片來源:https://www.infoq.com/presentations/NoSQL-History/


上一篇
Data Warehouse 資料倉儲 (營運上各種光怪陸離的現象)
下一篇
Business Intelligence 商業智慧
系列文
吵什麼 AI 煉金術?!你家有礦嗎?(資料領域必知的 30 個詞彙)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言